
/*  A Bison parser, made from cmdgram.y with Bison version GNU Bison version 1.24
*/

#define YYBISON 1  /* Identify Bison output.  */

#define yyparse CMDparse
#define yylex CMDlex
#define yyerror CMDerror
#define yylval CMDlval
#define yychar CMDchar
#define yydebug CMDdebug
#define yynerrs CMDnerrs
#define	rwDEFINE	258
#define	rwENDDEF	259
#define	rwDECLARE	260
#define	rwDECLARESINGLETON	261
#define	rwBREAK	262
#define	rwELSE	263
#define	rwCONTINUE	264
#define	rwGLOBAL	265
#define	rwIF	266
#define	rwNIL	267
#define	rwRETURN	268
#define	rwWHILE	269
#define	rwDO	270
#define	rwENDIF	271
#define	rwENDWHILE	272
#define	rwENDFOR	273
#define	rwDEFAULT	274
#define	rwFOR	275
#define	rwFOREACH	276
#define	rwFOREACHSTR	277
#define	rwIN	278
#define	rwDATABLOCK	279
#define	rwSWITCH	280
#define	rwCASE	281
#define	rwSWITCHSTR	282
#define	rwCASEOR	283
#define	rwPACKAGE	284
#define	rwNAMESPACE	285
#define	rwCLASS	286
#define	rwASSERT	287
#define	ILLEGAL_TOKEN	288
#define	CHRCONST	289
#define	INTCONST	290
#define	TTAG	291
#define	VAR	292
#define	IDENT	293
#define	TYPEIDENT	294
#define	DOCBLOCK	295
#define	STRATOM	296
#define	TAGATOM	297
#define	FLTCONST	298
#define	opINTNAME	299
#define	opINTNAMER	300
#define	opMINUSMINUS	301
#define	opPLUSPLUS	302
#define	STMT_SEP	303
#define	opSHL	304
#define	opSHR	305
#define	opPLASN	306
#define	opMIASN	307
#define	opMLASN	308
#define	opDVASN	309
#define	opMODASN	310
#define	opANDASN	311
#define	opXORASN	312
#define	opORASN	313
#define	opSLASN	314
#define	opSRASN	315
#define	opCAT	316
#define	opEQ	317
#define	opNE	318
#define	opGE	319
#define	opLE	320
#define	opAND	321
#define	opOR	322
#define	opSTREQ	323
#define	opCOLONCOLON	324
#define	opMDASN	325
#define	opNDASN	326
#define	opNTASN	327
#define	opSTRNE	328
#define	UNARY	329

#line 1 "cmdgram.y"


// bison --defines=cmdgram.h --verbose -o cmdgram.cpp -p CMD CMDgram.y

// Make sure we don't get gram.h twice.
#define _CMDGRAM_H_

#include <stdlib.h>
#include <stdio.h>
#include "console/console.h"
#include "console/compiler.h"
#include "console/consoleInternal.h"
#include "core/strings/stringFunctions.h"

#ifndef YYDEBUG
#define YYDEBUG 0
#endif

#define YYSSIZE 350

int outtext(char *fmt, ...);
extern int serrors;

#define nil 0
#undef YY_ARGS
#define YY_ARGS(x)   x

int CMDlex();
void CMDerror(char *, ...);

#ifdef alloca
#undef alloca
#endif
#define alloca dMalloc

template< typename T >
struct Token
{
   T value;
   U32 lineNumber;
};

#line 44 "cmdgram.y"

/* Reserved Word Definitions */
#line 55 "cmdgram.y"

/* Constants and Identifier Definitions */
#line 69 "cmdgram.y"

/* Operator Definitions */

#line 82 "cmdgram.y"
typedef union {
   Token< char >           c;
   Token< int >            i;
   Token< const char* >    s;
   Token< char* >          str;
   Token< double >         f;
   StmtNode*               stmt;
   ExprNode*               expr;
   SlotAssignNode*         slist;
   VarNode*                var;
   SlotDecl                slot;
   InternalSlotDecl        intslot;
   ObjectBlockDecl         odcl;
   ObjectDeclNode*         od;
   AssignDecl              asn;
   IfStmtNode*             ifnode;
} YYSTYPE;

#ifndef YYLTYPE
typedef
struct yyltype
{
   int timestamp;
   int first_line;
   int first_column;
   int last_line;
   int last_column;
   char *text;
}
yyltype;

#define YYLTYPE yyltype
#endif

#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		391
#define	YYFLAG		-32768
#define	YYNTBASE	100

#define YYTRANSLATE(x) ((unsigned)(x) <= 329 ? yytranslate[x] : 140)

static const char yytranslate[] = { 0,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,    64,     2,     2,     2,    54,    53,     2,    55,
56,    46,    44,    57,    45,    51,    47,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,    58,    59,    48,
50,    49,    96,    65,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
92,     2,    99,    62,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,    60,    52,    61,    63,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
36,    37,    38,    39,    40,    41,    42,    43,    66,    67,
68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
88,    89,    90,    91,    93,    94,    95,    97,    98
};

#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0,     2,     3,     6,     8,    10,    12,    19,    21,    24,
25,    28,    30,    32,    34,    36,    38,    40,    43,    46,
49,    53,    56,    61,    68,    70,    79,    90,    91,    93,
95,    99,   110,   121,   129,   142,   152,   163,   171,   172,
175,   176,   178,   179,   182,   183,   185,   187,   190,   193,
197,   201,   203,   211,   219,   224,   232,   238,   240,   244,
250,   258,   264,   271,   281,   290,   299,   307,   316,   324,
332,   339,   347,   355,   357,   359,   363,   367,   371,   375,
379,   383,   387,   391,   395,   398,   401,   403,   409,   413,
417,   421,   425,   429,   433,   437,   441,   445,   449,   453,
457,   461,   464,   467,   469,   471,   473,   475,   477,   479,
481,   483,   485,   490,   498,   502,   509,   513,   517,   519,
523,   525,   527,   530,   533,   536,   539,   542,   545,   548,
551,   554,   557,   559,   561,   563,   567,   574,   577,   583,
586,   590,   596,   601,   608,   615,   620,   625,   632,   633,
635,   637,   641,   642,   644,   646,   649,   654,   660,   665,
673,   682,   684
};

static const short yyrhs[] = { 101,
0,     0,   101,   102,     0,   106,     0,   107,     0,   103,
0,    29,    38,    60,   104,    61,    59,     0,   107,     0,
104,   107,     0,     0,   105,   106,     0,   121,     0,   122,
0,   123,     0,   124,     0,   110,     0,   118,     0,     7,
59,     0,     9,    59,     0,    13,    59,     0,    13,   126,
59,     0,   125,    59,     0,    36,    50,   126,    59,     0,
36,    50,   126,    57,   126,    59,     0,    40,     0,     3,
38,    55,   108,    56,    60,   105,    61,     0,     3,    38,
91,    38,    55,   108,    56,    60,   105,    61,     0,     0,
109,     0,    37,     0,   109,    57,    37,     0,    24,   129,
55,   126,   112,    56,    60,   136,    61,    59,     0,     5,
129,    55,   113,   112,   114,    56,    60,   115,    61,     0,
5,   129,    55,   113,   112,   114,    56,     0,     5,   129,
55,    92,   113,    99,   112,   114,    56,    60,   115,    61,
0,     5,   129,    55,    92,   113,    99,   112,   114,    56,
0,     6,   129,    55,   113,   112,   114,    56,    60,   115,
61,     0,     6,   129,    55,   113,   112,   114,    56,     0,
0,    58,    38,     0,     0,   126,     0,     0,    57,   135,
0,     0,   137,     0,   116,     0,   137,   116,     0,   111,
59,     0,   116,   111,    59,     0,    60,   105,    61,     0,
106,     0,    25,    55,   126,    56,    60,   119,    61,     0,
27,    55,   126,    56,    60,   119,    61,     0,    26,   120,
58,   105,     0,    26,   120,    58,   105,    19,    58,   105,
0,    26,   120,    58,   105,   119,     0,   126,     0,   120,
28,   126,     0,    11,    55,   126,    56,   117,     0,    11,
55,   126,    56,   117,     8,   117,     0,    14,    55,   126,
56,   117,     0,    15,   117,    14,    55,   126,    56,     0,
20,    55,   126,    59,   126,    59,   126,    56,   117,     0,
20,    55,   126,    59,   126,    59,    56,   117,     0,    20,
55,   126,    59,    59,   126,    56,   117,     0,    20,    55,
126,    59,    59,    56,   117,     0,    20,    55,    59,   126,
59,   126,    56,   117,     0,    20,    55,    59,   126,    59,
56,   117,     0,    20,    55,    59,    59,   126,    56,   117,
0,    20,    55,    59,    59,    56,   117,     0,    21,    55,
37,    23,   126,    56,   117,     0,    22,    55,    37,    23,
126,    56,   117,     0,   131,     0,   131,     0,    55,   126,
56,     0,   126,    62,   126,     0,   126,    54,   126,     0,
126,    53,   126,     0,   126,    52,   126,     0,   126,    44,
126,     0,   126,    45,   126,     0,   126,    46,   126,     0,
126,    47,   126,     0,    45,   126,     0,    46,   126,     0,
36,     0,   126,    96,   126,    58,   126,     0,   126,    48,
126,     0,   126,    49,   126,     0,   126,    86,   126,     0,
126,    87,   126,     0,   126,    84,   126,     0,   126,    85,
126,     0,   126,    89,   126,     0,   126,    71,   126,     0,
126,    72,   126,     0,   126,    88,   126,     0,   126,    90,
126,     0,   126,    97,   126,     0,   126,    65,   126,     0,
64,   126,     0,    63,   126,     0,    42,     0,    43,     0,
35,     0,     7,     0,   127,     0,   128,     0,    38,     0,
41,     0,    37,     0,    37,    92,   139,    99,     0,     3,
55,   108,    56,    60,   105,    61,     0,   126,    51,    38,
0,   126,    51,    38,    92,   139,    99,     0,   126,    66,
129,     0,   126,    67,   129,     0,    38,     0,    55,   126,
56,     0,    69,     0,    68,     0,    73,   126,     0,    74,
126,     0,    75,   126,     0,    76,   126,     0,    77,   126,
0,    78,   126,     0,    79,   126,     0,    80,   126,     0,
81,   126,     0,    82,   126,     0,   132,     0,   133,     0,
111,     0,    37,    50,   126,     0,    37,    92,   139,    99,
50,   126,     0,    37,   130,     0,    37,    92,   139,    99,
130,     0,   127,   130,     0,   127,    50,   126,     0,   127,
50,    60,   135,    61,     0,    38,    55,   134,    56,     0,
38,    91,    38,    55,   134,    56,     0,   126,    51,    38,
55,   134,    56,     0,   126,    55,   134,    56,     0,    32,
55,   126,    56,     0,    32,    55,   126,    57,    41,    56,
0,     0,   135,     0,   126,     0,   135,    57,   126,     0,
0,   137,     0,   138,     0,   137,   138,     0,    38,    50,
126,    59,     0,    39,    38,    50,   126,    59,     0,    24,
50,   126,    59,     0,    38,    92,   139,    99,    50,   126,
59,     0,    39,    38,    92,   139,    99,    50,   126,    59,
0,   126,     0,   139,    57,   126,     0
};

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
161,   166,   168,   173,   175,   177,   182,   187,   189,   194,
196,   201,   202,   203,   204,   205,   206,   207,   209,   211,
213,   215,   217,   219,   221,   226,   228,   233,   235,   240,
242,   247,   252,   254,   256,   258,   260,   262,   267,   269,
274,   276,   281,   283,   288,   290,   292,   294,   299,   301,
306,   308,   313,   315,   320,   322,   324,   329,   331,   336,
338,   343,   345,   350,   352,   354,   356,   358,   360,   362,
364,   369,   371,   376,   381,   383,   385,   387,   389,   391,
393,   395,   397,   399,   401,   403,   405,   407,   409,   411,
413,   415,   417,   419,   421,   423,   425,   427,   429,   431,
433,   435,   437,   439,   441,   443,   445,   447,   449,   451,
453,   455,   457,   459,   477,   479,   484,   486,   491,   493,
498,   500,   502,   504,   506,   508,   510,   512,   514,   516,
518,   520,   525,   527,   529,   531,   533,   535,   537,   539,
541,   543,   548,   550,   552,   554,   559,   561,   566,   568,
573,   575,   580,   582,   587,   589,   594,   596,   598,   600,
602,   607,   609
};

static const char * const yytname[] = { "$","error","$undefined.","rwDEFINE",
"rwENDDEF","rwDECLARE","rwDECLARESINGLETON","rwBREAK","rwELSE","rwCONTINUE",
"rwGLOBAL","rwIF","rwNIL","rwRETURN","rwWHILE","rwDO","rwENDIF","rwENDWHILE",
"rwENDFOR","rwDEFAULT","rwFOR","rwFOREACH","rwFOREACHSTR","rwIN","rwDATABLOCK",
"rwSWITCH","rwCASE","rwSWITCHSTR","rwCASEOR","rwPACKAGE","rwNAMESPACE","rwCLASS",
"rwASSERT","ILLEGAL_TOKEN","CHRCONST","INTCONST","TTAG","VAR","IDENT","TYPEIDENT",
"DOCBLOCK","STRATOM","TAGATOM","FLTCONST","'+'","'-'","'*'","'/'","'<'","'>'",
"'='","'.'","'|'","'&'","'%'","'('","')'","','","':'","';'","'{'","'}'","'^'",
"'~'","'!'","'@'","opINTNAME","opINTNAMER","opMINUSMINUS","opPLUSPLUS","STMT_SEP",
"opSHL","opSHR","opPLASN","opMIASN","opMLASN","opDVASN","opMODASN","opANDASN",
"opXORASN","opORASN","opSLASN","opSRASN","opCAT","opEQ","opNE","opGE","opLE",
"opAND","opOR","opSTREQ","opCOLONCOLON","'['","opMDASN","opNDASN","opNTASN",
"'?'","opSTRNE","UNARY","']'","start","decl_list","decl","package_decl","fn_decl_list",
"statement_list","stmt","fn_decl_stmt","var_list_decl","var_list","datablock_decl",
"object_decl","parent_block","object_name","object_args","object_declare_block",
"object_decl_list","stmt_block","switch_stmt","case_block","case_expr","if_stmt",
"while_stmt","for_stmt","foreach_stmt","expression_stmt","expr","slot_acc","intslot_acc",
"class_name_expr","assign_op_struct","stmt_expr","funcall_expr","assert_expr",
"expr_list_decl","expr_list","slot_assign_list_opt","slot_assign_list","slot_assign",
"aidx_expr",""
};
#endif

static const short yyr1[] = { 0,
100,   101,   101,   102,   102,   102,   103,   104,   104,   105,
105,   106,   106,   106,   106,   106,   106,   106,   106,   106,
106,   106,   106,   106,   106,   107,   107,   108,   108,   109,
109,   110,   111,   111,   111,   111,   111,   111,   112,   112,
113,   113,   114,   114,   115,   115,   115,   115,   116,   116,
117,   117,   118,   118,   119,   119,   119,   120,   120,   121,
121,   122,   122,   123,   123,   123,   123,   123,   123,   123,
123,   124,   124,   125,   126,   126,   126,   126,   126,   126,
126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
126,   126,   126,   126,   127,   127,   128,   128,   129,   129,
130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
130,   130,   131,   131,   131,   131,   131,   131,   131,   131,
131,   131,   132,   132,   132,   132,   133,   133,   134,   134,
135,   135,   136,   136,   137,   137,   138,   138,   138,   138,
138,   139,   139
};

static const short yyr2[] = { 0,
1,     0,     2,     1,     1,     1,     6,     1,     2,     0,
2,     1,     1,     1,     1,     1,     1,     2,     2,     2,
3,     2,     4,     6,     1,     8,    10,     0,     1,     1,
3,    10,    10,     7,    12,     9,    10,     7,     0,     2,
0,     1,     0,     2,     0,     1,     1,     2,     2,     3,
3,     1,     7,     7,     4,     7,     5,     1,     3,     5,
7,     5,     6,     9,     8,     8,     7,     8,     7,     7,
6,     7,     7,     1,     1,     3,     3,     3,     3,     3,
3,     3,     3,     3,     2,     2,     1,     5,     3,     3,
3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
3,     2,     2,     1,     1,     1,     1,     1,     1,     1,
1,     1,     4,     7,     3,     6,     3,     3,     1,     3,
1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
2,     2,     1,     1,     1,     3,     6,     2,     5,     2,
3,     5,     4,     6,     6,     4,     4,     6,     0,     1,
1,     3,     0,     1,     1,     2,     4,     5,     4,     7,
8,     1,     3
};

static const short yydefact[] = { 2,
1,     0,     0,     0,   107,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,   106,    87,
112,   110,    25,   111,   104,   105,     0,     0,     0,     0,
0,     3,     6,     4,     5,    16,   135,    17,    12,    13,
14,    15,     0,     0,   108,   109,    75,   133,   134,     0,
28,   119,     0,     0,     0,    18,    19,     0,     0,   107,
87,    20,     0,    75,     0,    10,    52,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,   122,   121,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   138,   149,     0,    85,    86,     0,   103,   102,    22,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
149,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   140,    28,     0,
30,     0,    29,     0,    41,    41,     0,    21,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   136,   123,   124,   125,   126,   127,   128,   129,   130,
131,   132,   162,     0,   151,     0,   150,     0,    76,    81,
82,    83,    84,    89,    90,   115,    80,    79,    78,     0,
77,   101,   117,   118,    96,    97,    93,    94,    91,    92,
98,    95,    99,     0,   100,     0,   141,     0,     0,     0,
0,   120,    41,    39,    42,    39,     0,     0,    51,    11,
0,     0,     0,     0,     0,     0,    39,     0,     0,     0,
0,     8,   147,     0,     0,    23,     0,   113,   143,     0,
149,   149,     0,   146,     0,     0,     0,    28,    10,    31,
0,     0,    43,    43,    60,    62,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     9,     0,
0,   163,     0,   139,   152,     0,     0,     0,    88,   142,
10,     0,     0,    39,    40,     0,     0,     0,     0,    63,
71,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,     7,   148,    24,   137,   144,   145,   116,
0,     0,   114,    43,    44,    34,    38,    61,    70,    69,
0,    67,     0,     0,     0,    72,    73,   153,     0,    58,
53,    54,    26,    10,     0,    45,    45,    68,    66,    65,
0,     0,     0,     0,     0,   154,   155,     0,    10,     0,
36,     0,     0,    47,    46,     0,    64,     0,     0,     0,
0,     0,   156,    59,    55,    27,    45,    49,    33,     0,
48,    37,     0,     0,     0,     0,     0,    32,     0,    57,
0,    50,   159,   157,     0,     0,     0,    10,    35,     0,
158,     0,    56,     0,     0,   160,     0,   161,     0,     0,
0
};

static const short yydefgoto[] = { 389,
1,    32,    33,   221,   140,    67,    35,   132,   133,    36,
37,   243,   204,   277,   343,   344,    68,    38,   292,   319,
39,    40,    41,    42,    43,    44,    45,    46,    54,    92,
64,    48,    49,   166,   167,   335,   345,   337,   164
};

static const short yypact[] = { -32768,
213,    -7,    55,    55,   -37,   -25,   -18,   490,   -13,   422,
5,    14,    41,    55,    47,    49,     9,    51,-32768,    57,
566,   -23,-32768,-32768,-32768,-32768,  1187,  1187,  1187,  1187,
1187,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,    -5,  2650,  3021,-32768,    35,-32768,-32768,   -12,
62,-32768,  1187,    67,    68,-32768,-32768,  1187,    69,-32768,
-32768,-32768,  1300,-32768,  1187,-32768,-32768,   103,   835,    88,
89,    77,  1187,  1187,    73,  1187,  1187,  1187,-32768,-32768,
1187,  1187,  1187,  1187,  1187,  1187,  1187,  1187,  1187,  1187,
1187,-32768,  1187,    96,   219,   219,  1354,   219,   219,-32768,
1187,  1187,  1187,  1187,  1187,  1187,    97,  1187,  1187,  1187,
1187,  1187,  1187,    55,    55,  1187,  1187,  1187,  1187,  1187,
1187,  1187,  1187,  1187,  1187,  1187,   879,-32768,    62,    98,
-32768,    81,    91,  1408,    21,  1187,  1462,-32768,  1516,   556,
95,   923,  1570,   123,   131,  1187,  1624,  1678,   152,  1192,
1246,  2650,  2650,  2650,  2650,  2650,  2650,  2650,  2650,  2650,
2650,  2650,  2650,   -38,  2650,   100,   104,   111,-32768,   145,
145,   219,   219,  3015,  3015,   -40,  2845,  2939,   219,   112,
2892,   143,-32768,-32768,   277,   277,  2986,  2986,  3015,  3015,
2798,  2751,   143,  1732,   143,  1187,  2650,   113,   116,   107,
135,-32768,  1187,   119,  2650,   119,   422,   422,-32768,-32768,
1187,   967,  1786,  1011,  1187,  1187,  1840,   122,   126,   157,
13,-32768,-32768,   162,  1187,-32768,  1187,  3041,-32768,  1187,
1187,  1187,  1187,-32768,  1187,    44,   144,    62,-32768,-32768,
106,   170,   156,   156,   209,-32768,  1894,   422,  1948,  1055,
1099,  2002,  2056,  2110,   165,   197,   197,   166,-32768,   173,
2164,  2650,  1187,-32768,  2650,   174,   175,   -28,  2704,-32768,
-32768,   176,   656,   119,-32768,  1187,   180,   183,   422,-32768,
-32768,   422,   422,  2218,   422,  2272,  1143,   422,   422,   181,
1187,   182,   185,-32768,-32768,-32768,  2650,-32768,-32768,-32768,
701,   184,-32768,   156,   104,   192,   200,-32768,-32768,-32768,
422,-32768,   422,   422,  2326,-32768,-32768,    76,    12,  2650,
-32768,-32768,-32768,-32768,   201,    92,    92,-32768,-32768,-32768,
422,   211,   -20,   224,   202,    76,-32768,  1187,-32768,   746,
204,   206,   205,    39,    92,   208,-32768,  1187,  1187,  1187,
-17,   212,-32768,  2650,   138,-32768,    92,-32768,-32768,   216,
39,-32768,  2380,  2434,   -21,  1187,  1187,-32768,   221,-32768,
222,-32768,-32768,-32768,   217,  2488,    -8,-32768,-32768,  1187,
-32768,   230,   791,  2542,  1187,-32768,  2596,-32768,   289,   290,
-32768
};

static const short yypgoto[] = { -32768,
-32768,-32768,-32768,-32768,  -236,     0,  -132,  -118,-32768,-32768,
-306,  -192,  -113,  -231,  -262,   -54,  -202,-32768,  -247,-32768,
-32768,-32768,-32768,-32768,-32768,   288,-32768,-32768,     4,   -43,
-1,-32768,-32768,  -104,  -184,-32768,   -26,  -295,  -229
};


#define	YYLAST		3123


static const short yytable[] = { 47,
34,   128,   273,   268,   245,   246,   180,    55,    47,   293,
198,   236,   278,   244,   232,   220,   222,    72,   227,   342,
342,    56,   206,    59,   255,     3,     4,    60,   227,   349,
50,    93,   366,    57,   301,   227,    58,   360,   342,   338,
353,    65,   129,     3,     4,   281,    75,    51,   227,   353,
342,   233,    18,   100,   360,    19,    61,    21,    22,    69,
228,    24,    25,    26,   346,    27,    28,    94,    70,   339,
300,   350,   325,   258,   367,    29,   308,   375,   130,   309,
310,   304,   312,    30,    31,   316,   317,   340,   259,   241,
382,   305,    52,   -74,   371,    71,     3,     4,   131,   332,
230,    73,   355,    74,   270,    76,    77,   370,   328,    53,
329,   330,   203,   333,   334,   332,   141,   183,   184,   272,
365,   135,   136,    51,   144,   145,   266,   267,   347,   333,
334,   146,   149,   168,   176,   199,   200,   377,    47,   210,
59,   383,     3,     4,     5,   215,     6,   201,     7,   211,
8,     9,    10,   216,   220,   229,   369,    11,    12,    13,
230,    14,    15,   291,    16,   231,   239,   234,   237,    18,
238,   240,    19,    20,    21,    22,   242,    23,    24,    25,
26,   256,    27,    28,   264,   257,   101,   102,   103,   104,
103,   104,    29,   107,    50,   107,   110,   111,   110,   111,
30,    31,   260,   271,   274,    47,    47,   275,   114,   115,
114,   115,   276,   116,   117,     2,   279,     3,     4,     5,
290,     6,   291,     7,   294,     8,     9,    10,   295,   298,
299,   302,    11,    12,    13,   306,    14,    15,   307,    16,
318,    17,   321,   324,    18,   322,    47,    19,    20,    21,
22,   326,    23,    24,    25,    26,   341,    27,    28,   327,
348,   351,   352,   357,   358,   359,   380,    29,   362,   107,
368,    47,   210,   111,   372,    30,    31,    47,   378,   385,
47,    47,   379,    47,   114,   115,    47,    47,   390,   391,
361,   336,     0,     0,     0,    63,     0,     0,     0,    47,
210,     0,     0,     0,     0,     0,     0,     0,     0,    47,
0,    47,    47,     0,    95,    96,    97,    98,    99,     0,
101,   102,   103,   104,     0,     0,     0,   107,     0,    47,
110,   111,     0,     0,     0,     0,     0,     0,    47,   210,
134,     0,   114,   115,     0,   137,     0,     0,     0,     0,
0,     0,   139,    47,   210,     0,   143,     0,     0,     0,
147,   148,     0,   150,   151,   152,     0,     0,   153,   154,
155,   156,   157,   158,   159,   160,   161,   162,   163,     0,
165,    47,   210,     0,     0,     0,     0,     0,   170,   171,
172,   173,   174,   175,     0,   177,   178,   179,   165,   181,
182,     0,     0,   185,   186,   187,   188,   189,   190,   191,
192,   193,   194,   195,   197,     0,     0,     0,     0,     0,
0,     0,   205,   205,    59,     0,     3,     4,     5,   213,
6,     0,     7,   217,     8,     9,    10,     0,     0,     0,
0,    11,    12,    13,     0,    14,    15,     0,    16,     0,
0,     0,     0,    18,     0,     0,    19,    20,    21,    22,
0,    23,    24,    25,    26,     0,    27,    28,     0,     0,
0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
0,    66,     0,   165,    30,    31,     0,     0,     0,     0,
205,     0,    59,     0,     3,     4,    60,     0,   247,   249,
0,   252,   253,   254,     0,     0,     0,     0,     0,     0,
0,     0,   261,     0,   262,     0,     0,   265,   165,   165,
163,    18,   269,     0,    19,    61,    21,    22,     0,     0,
24,    25,    26,     0,    27,    28,     0,   284,   286,     0,
0,     0,     0,     0,    29,     0,     0,     0,    62,     0,
297,     0,    30,    31,     0,     0,     0,     0,    59,     0,
3,     4,     5,   165,     6,     0,     7,     0,     8,     9,
10,     0,     0,     0,   315,    11,    12,    13,   320,    14,
15,     0,    16,     0,     0,     0,     0,    18,     0,     0,
19,    20,    21,    22,     0,    23,    24,    25,    26,     0,
27,    28,     0,     0,     0,     0,     0,     0,     0,     0,
29,     0,     0,     0,     0,    78,   209,     0,    30,    31,
0,     0,     0,     0,     0,   354,     0,     0,     0,     0,
0,     0,     0,    79,    80,   363,   364,   163,    81,    82,
83,    84,    85,    86,    87,    88,    89,    90,     0,     0,
0,     0,     0,   376,   163,     0,     0,    91,    59,     0,
3,     4,     5,     0,     6,     0,     7,   384,     8,     9,
10,     0,   387,     0,     0,    11,    12,    13,     0,    14,
15,     0,    16,     0,     0,     0,     0,    18,     0,     0,
19,    20,    21,    22,     0,    23,    24,    25,    26,     0,
27,    28,     0,    59,     0,     3,     4,     5,     0,     6,
29,     7,     0,     8,     9,    10,   303,     0,    30,    31,
11,    12,    13,     0,    14,    15,     0,    16,     0,     0,
0,     0,    18,     0,     0,    19,    20,    21,    22,     0,
23,    24,    25,    26,     0,    27,    28,     0,    59,     0,
3,     4,     5,     0,     6,    29,     7,     0,     8,     9,
10,   323,     0,    30,    31,    11,    12,    13,     0,    14,
15,     0,    16,     0,     0,     0,     0,    18,     0,     0,
19,    20,    21,    22,     0,    23,    24,    25,    26,     0,
27,    28,     0,    59,     0,     3,     4,     5,     0,     6,
29,     7,     0,     8,     9,    10,   356,     0,    30,    31,
11,    12,    13,     0,    14,    15,     0,    16,     0,     0,
0,     0,    18,     0,     0,    19,    20,    21,    22,     0,
23,    24,    25,    26,     0,    27,    28,    59,     0,     3,
4,    60,     0,     0,     0,    29,     0,     0,     0,     0,
0,     0,     0,    30,    31,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,    18,     0,     0,    19,
61,    21,    22,     0,     0,    24,    25,    26,     0,    27,
28,    59,     0,     3,     4,    60,     0,     0,     0,    29,
0,     0,     0,   142,     0,     0,     0,    30,    31,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
18,     0,     0,    19,    61,    21,    22,     0,     0,    24,
25,    26,     0,    27,    28,    59,     0,     3,     4,    60,
0,     0,     0,    29,     0,     0,     0,     0,   196,     0,
0,    30,    31,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,    18,     0,     0,    19,    61,    21,
22,     0,     0,    24,    25,    26,     0,    27,    28,    59,
0,     3,     4,    60,     0,     0,     0,    29,     0,     0,
0,   212,     0,     0,     0,    30,    31,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,    18,     0,
0,    19,    61,    21,    22,     0,     0,    24,    25,    26,
0,    27,    28,    59,     0,     3,     4,    60,     0,     0,
0,    29,   248,     0,     0,     0,     0,     0,     0,    30,
31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,    18,     0,     0,    19,    61,    21,    22,     0,
0,    24,    25,    26,     0,    27,    28,    59,     0,     3,
4,    60,     0,     0,     0,    29,     0,     0,     0,   251,
0,     0,     0,    30,    31,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,    18,     0,     0,    19,
61,    21,    22,     0,     0,    24,    25,    26,     0,    27,
28,    59,     0,     3,     4,    60,     0,     0,     0,    29,
283,     0,     0,     0,     0,     0,     0,    30,    31,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
18,     0,     0,    19,    61,    21,    22,     0,     0,    24,
25,    26,     0,    27,    28,    59,     0,     3,     4,    60,
0,     0,     0,    29,   285,     0,     0,     0,     0,     0,
0,    30,    31,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,    18,     0,     0,    19,    61,    21,
22,     0,     0,    24,    25,    26,     0,    27,    28,    59,
0,     3,     4,    60,     0,     0,     0,    29,   314,     0,
0,     0,     0,     0,     0,    30,    31,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,    18,     0,
0,    19,    61,    21,    22,     0,     0,    24,    25,    26,
0,    27,    28,     0,     0,   101,   102,   103,   104,   105,
106,    29,   107,   108,   109,   110,   111,   223,   224,    30,
31,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,     0,   225,     0,   226,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,     0,     0,     0,   138,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,   169,
0,     0,     0,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,     0,     0,     0,     0,     0,   125,
126,   101,   102,   103,   104,   105,   106,     0,   107,   108,
109,   110,   111,   202,     0,     0,     0,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,   122,   123,   124,     0,     0,
0,     0,     0,   125,   126,   101,   102,   103,   104,   105,
106,     0,   107,   108,   109,   110,   111,   207,     0,     0,
0,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,   208,     0,     0,     0,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,     0,     0,     0,   214,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,   218,
0,     0,     0,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,     0,     0,     0,     0,     0,   125,
126,   101,   102,   103,   104,   105,   106,     0,   107,   108,
109,   110,   111,   219,     0,     0,     0,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,   122,   123,   124,     0,     0,
0,     0,     0,   125,   126,   101,   102,   103,   104,   105,
106,     0,   107,   108,   109,   110,   111,     0,     0,   235,
0,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,     0,     0,     0,   250,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,     0,     0,   242,     0,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,   280,
0,     0,     0,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,     0,     0,     0,     0,     0,   125,
126,   101,   102,   103,   104,   105,   106,     0,   107,   108,
109,   110,   111,   282,     0,     0,     0,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,   122,   123,   124,     0,     0,
0,     0,     0,   125,   126,   101,   102,   103,   104,   105,
106,     0,   107,   108,   109,   110,   111,     0,     0,     0,
287,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,   288,     0,     0,     0,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,   289,     0,     0,     0,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,     0,
0,     0,   296,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,     0,     0,     0,     0,     0,   125,
126,   101,   102,   103,   104,   105,   106,     0,   107,   108,
109,   110,   111,   311,     0,     0,     0,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,   122,   123,   124,     0,     0,
0,     0,     0,   125,   126,   101,   102,   103,   104,   105,
106,     0,   107,   108,   109,   110,   111,   313,     0,     0,
0,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,   331,     0,     0,     0,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,     0,     0,     0,   373,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,     0,
0,     0,   374,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,     0,     0,     0,     0,     0,   125,
126,   101,   102,   103,   104,   105,   106,     0,   107,   108,
109,   110,   111,     0,     0,     0,   381,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,   122,   123,   124,     0,     0,
0,     0,     0,   125,   126,   101,   102,   103,   104,   105,
106,     0,   107,   108,   109,   110,   111,     0,     0,     0,
386,     0,     0,   112,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,   122,
123,   124,     0,     0,     0,     0,     0,   125,   126,   101,
102,   103,   104,   105,   106,     0,   107,   108,   109,   110,
111,     0,     0,     0,   388,     0,     0,   112,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,     0,   118,
119,   120,   121,   122,   123,   124,     0,     0,     0,     0,
0,   125,   126,   101,   102,   103,   104,   105,   106,     0,
107,   108,   109,   110,   111,     0,     0,     0,     0,     0,
0,   112,     0,     0,   113,   114,   115,     0,     0,     0,
116,   117,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,   118,   119,   120,   121,   122,   123,   124,
0,     0,     0,     0,     0,   125,   126,   101,   102,   103,
104,   105,   106,     0,   107,   108,   109,   110,   111,     0,
0,     0,     0,     0,     0,   112,     0,     0,   113,   114,
115,     0,     0,     0,   116,   117,     0,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,   118,   119,   120,
121,   122,   123,   124,   101,   102,   103,   104,   105,   106,
126,   107,   108,   109,   110,   111,     0,     0,     0,     0,
0,     0,   112,     0,     0,   113,   114,   115,     0,     0,
0,   116,   117,     0,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,   118,   119,   120,   121,   122,     0,
124,   101,   102,   103,   104,   105,   106,   126,   107,   108,
109,   110,   111,     0,     0,     0,     0,     0,     0,   112,
0,     0,   113,   114,   115,     0,     0,     0,   116,   117,
0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,   118,   119,   120,   121,     0,     0,   124,   101,   102,
103,   104,   105,   106,   126,   107,     0,   109,   110,   111,
0,     0,     0,     0,     0,     0,   112,     0,     0,   113,
114,   115,     0,     0,     0,   116,   117,     0,     0,     0,
0,     0,     0,     0,     0,     0,     0,     0,   118,   119,
120,   121,     0,     0,   124,   101,   102,   103,   104,   105,
106,   126,   107,     0,   109,   110,   111,     0,     0,     0,
0,     0,     0,     0,     0,     0,   113,   114,   115,     0,
0,     0,   116,   117,     0,     0,     0,     0,     0,     0,
0,     0,     0,     0,     0,   118,   119,   120,   121,     0,
0,   124,   101,   102,   103,   104,   105,   106,   126,   107,
0,     0,   110,   111,     0,     0,     0,     0,     0,     0,
0,     0,     0,   113,   114,   115,     0,     0,     0,   116,
117,     0,     0,     0,     0,     0,     0,     0,     0,     0,
0,     0,   118,   119,   120,   121,     0,     0,   124,   101,
102,   103,   104,   105,   106,   126,   107,     0,     0,   110,
111,     0,     0,     0,     0,     0,     0,     0,     0,     0,
113,   114,   115,     0,     0,     0,   116,   117,   101,   102,
103,   104,     0,     0,     0,   107,     0,     0,   110,   111,
127,   120,   121,     0,     0,   124,     0,     0,     0,   113,
114,   115,   126,     0,     0,   116,   117,     0,    79,    80,
263,     0,     0,    81,    82,    83,    84,    85,    86,    87,
88,    89,    90,     0,   124,     0,     0,     0,    79,    80,
0,   126,     0,    81,    82,    83,    84,    85,    86,    87,
88,    89,    90
};

static const short yycheck[] = { 1,
1,    45,   239,   233,   207,   208,   111,     4,    10,   257,
129,   196,   244,   206,    55,     3,   149,    14,    57,   326,
327,    59,   136,     3,   217,     5,     6,     7,    57,    50,
38,    55,    50,    59,   271,    57,    55,   344,   345,    28,
336,    55,    55,     5,     6,   248,    38,    55,    57,   345,
357,    92,    32,    59,   361,    35,    36,    37,    38,    55,
99,    41,    42,    43,   327,    45,    46,    91,    55,    58,
99,    92,   304,    61,    92,    55,   279,    99,    91,   282,
283,   274,   285,    63,    64,   288,   289,   324,   221,   203,
99,   276,    38,    59,   357,    55,     5,     6,    37,    24,
57,    55,   339,    55,    61,    55,    50,   355,   311,    55,
313,   314,    92,    38,    39,    24,    14,   114,   115,   238,
350,    55,    55,    55,    37,    37,   231,   232,   331,    38,
39,    55,    60,    38,    38,    38,    56,   367,   140,   140,
3,   378,     5,     6,     7,    23,     9,    57,    11,    55,
13,    14,    15,    23,     3,    56,    19,    20,    21,    22,
57,    24,    25,    26,    27,    55,    60,    56,    56,    32,
55,    37,    35,    36,    37,    38,    58,    40,    41,    42,
43,    60,    45,    46,   228,    60,    44,    45,    46,    47,
46,    47,    55,    51,    38,    51,    54,    55,    54,    55,
63,    64,    41,    60,    99,   207,   208,    38,    66,    67,
66,    67,    57,    71,    72,     3,     8,     5,     6,     7,
56,     9,    26,    11,    59,    13,    14,    15,    56,    56,
56,    56,    20,    21,    22,    56,    24,    25,    56,    27,
60,    29,    61,    60,    32,    61,   248,    35,    36,    37,
38,    60,    40,    41,    42,    43,    56,    45,    46,    60,
50,    38,    61,    60,    59,    61,    50,    55,    61,    51,
59,   273,   273,    55,    59,    63,    64,   279,    58,    50,
282,   283,    61,   285,    66,    67,   288,   289,     0,     0,
345,   318,    -1,    -1,    -1,     8,    -1,    -1,    -1,   301,
301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   311,
-1,   313,   314,    -1,    27,    28,    29,    30,    31,    -1,
44,    45,    46,    47,    -1,    -1,    -1,    51,    -1,   331,
54,    55,    -1,    -1,    -1,    -1,    -1,    -1,   340,   340,
53,    -1,    66,    67,    -1,    58,    -1,    -1,    -1,    -1,
-1,    -1,    65,   355,   355,    -1,    69,    -1,    -1,    -1,
73,    74,    -1,    76,    77,    78,    -1,    -1,    81,    82,
83,    84,    85,    86,    87,    88,    89,    90,    91,    -1,
93,   383,   383,    -1,    -1,    -1,    -1,    -1,   101,   102,
103,   104,   105,   106,    -1,   108,   109,   110,   111,   112,
113,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,    -1,
-1,    -1,   135,   136,     3,    -1,     5,     6,     7,   142,
9,    -1,    11,   146,    13,    14,    15,    -1,    -1,    -1,
-1,    20,    21,    22,    -1,    24,    25,    -1,    27,    -1,
-1,    -1,    -1,    32,    -1,    -1,    35,    36,    37,    38,
-1,    40,    41,    42,    43,    -1,    45,    46,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
-1,    60,    -1,   196,    63,    64,    -1,    -1,    -1,    -1,
203,    -1,     3,    -1,     5,     6,     7,    -1,   211,   212,
-1,   214,   215,   216,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,   225,    -1,   227,    -1,    -1,   230,   231,   232,
233,    32,   235,    -1,    35,    36,    37,    38,    -1,    -1,
41,    42,    43,    -1,    45,    46,    -1,   250,   251,    -1,
-1,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    -1,
263,    -1,    63,    64,    -1,    -1,    -1,    -1,     3,    -1,
5,     6,     7,   276,     9,    -1,    11,    -1,    13,    14,
15,    -1,    -1,    -1,   287,    20,    21,    22,   291,    24,
25,    -1,    27,    -1,    -1,    -1,    -1,    32,    -1,    -1,
35,    36,    37,    38,    -1,    40,    41,    42,    43,    -1,
45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
55,    -1,    -1,    -1,    -1,    50,    61,    -1,    63,    64,
-1,    -1,    -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    68,    69,   348,   349,   350,    73,    74,
75,    76,    77,    78,    79,    80,    81,    82,    -1,    -1,
-1,    -1,    -1,   366,   367,    -1,    -1,    92,     3,    -1,
5,     6,     7,    -1,     9,    -1,    11,   380,    13,    14,
15,    -1,   385,    -1,    -1,    20,    21,    22,    -1,    24,
25,    -1,    27,    -1,    -1,    -1,    -1,    32,    -1,    -1,
35,    36,    37,    38,    -1,    40,    41,    42,    43,    -1,
45,    46,    -1,     3,    -1,     5,     6,     7,    -1,     9,
55,    11,    -1,    13,    14,    15,    61,    -1,    63,    64,
20,    21,    22,    -1,    24,    25,    -1,    27,    -1,    -1,
-1,    -1,    32,    -1,    -1,    35,    36,    37,    38,    -1,
40,    41,    42,    43,    -1,    45,    46,    -1,     3,    -1,
5,     6,     7,    -1,     9,    55,    11,    -1,    13,    14,
15,    61,    -1,    63,    64,    20,    21,    22,    -1,    24,
25,    -1,    27,    -1,    -1,    -1,    -1,    32,    -1,    -1,
35,    36,    37,    38,    -1,    40,    41,    42,    43,    -1,
45,    46,    -1,     3,    -1,     5,     6,     7,    -1,     9,
55,    11,    -1,    13,    14,    15,    61,    -1,    63,    64,
20,    21,    22,    -1,    24,    25,    -1,    27,    -1,    -1,
-1,    -1,    32,    -1,    -1,    35,    36,    37,    38,    -1,
40,    41,    42,    43,    -1,    45,    46,     3,    -1,     5,
6,     7,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    32,    -1,    -1,    35,
36,    37,    38,    -1,    -1,    41,    42,    43,    -1,    45,
46,     3,    -1,     5,     6,     7,    -1,    -1,    -1,    55,
-1,    -1,    -1,    59,    -1,    -1,    -1,    63,    64,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,    41,
42,    43,    -1,    45,    46,     3,    -1,     5,     6,     7,
-1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    -1,
-1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    32,    -1,    -1,    35,    36,    37,
38,    -1,    -1,    41,    42,    43,    -1,    45,    46,     3,
-1,     5,     6,     7,    -1,    -1,    -1,    55,    -1,    -1,
-1,    59,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,
-1,    35,    36,    37,    38,    -1,    -1,    41,    42,    43,
-1,    45,    46,     3,    -1,     5,     6,     7,    -1,    -1,
-1,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,
64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    32,    -1,    -1,    35,    36,    37,    38,    -1,
-1,    41,    42,    43,    -1,    45,    46,     3,    -1,     5,
6,     7,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
-1,    -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    32,    -1,    -1,    35,
36,    37,    38,    -1,    -1,    41,    42,    43,    -1,    45,
46,     3,    -1,     5,     6,     7,    -1,    -1,    -1,    55,
56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,    41,
42,    43,    -1,    45,    46,     3,    -1,     5,     6,     7,
-1,    -1,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,
-1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    32,    -1,    -1,    35,    36,    37,
38,    -1,    -1,    41,    42,    43,    -1,    45,    46,     3,
-1,     5,     6,     7,    -1,    -1,    -1,    55,    56,    -1,
-1,    -1,    -1,    -1,    -1,    63,    64,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,
-1,    35,    36,    37,    38,    -1,    -1,    41,    42,    43,
-1,    45,    46,    -1,    -1,    44,    45,    46,    47,    48,
49,    55,    51,    52,    53,    54,    55,    56,    57,    63,
64,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    -1,    57,    -1,    59,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
-1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
97,    44,    45,    46,    47,    48,    49,    -1,    51,    52,
53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
-1,    -1,    -1,    96,    97,    44,    45,    46,    47,    48,
49,    -1,    51,    52,    53,    54,    55,    56,    -1,    -1,
-1,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
-1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
97,    44,    45,    46,    47,    48,    49,    -1,    51,    52,
53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
-1,    -1,    -1,    96,    97,    44,    45,    46,    47,    48,
49,    -1,    51,    52,    53,    54,    55,    -1,    -1,    58,
-1,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    -1,    -1,    -1,    59,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    -1,    -1,    58,    -1,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
-1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
97,    44,    45,    46,    47,    48,    49,    -1,    51,    52,
53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
-1,    -1,    -1,    96,    97,    44,    45,    46,    47,    48,
49,    -1,    51,    52,    53,    54,    55,    -1,    -1,    -1,
59,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    -1,
-1,    -1,    59,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
97,    44,    45,    46,    47,    48,    49,    -1,    51,    52,
53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
-1,    -1,    -1,    96,    97,    44,    45,    46,    47,    48,
49,    -1,    51,    52,    53,    54,    55,    56,    -1,    -1,
-1,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    -1,    -1,    -1,    59,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    -1,
-1,    -1,    59,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
97,    44,    45,    46,    47,    48,    49,    -1,    51,    52,
53,    54,    55,    -1,    -1,    -1,    59,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    88,    89,    90,    -1,    -1,
-1,    -1,    -1,    96,    97,    44,    45,    46,    47,    48,
49,    -1,    51,    52,    53,    54,    55,    -1,    -1,    -1,
59,    -1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    44,
45,    46,    47,    48,    49,    -1,    51,    52,    53,    54,
55,    -1,    -1,    -1,    59,    -1,    -1,    62,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-1,    96,    97,    44,    45,    46,    47,    48,    49,    -1,
51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,
-1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,
71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-1,    -1,    -1,    -1,    -1,    96,    97,    44,    45,    46,
47,    48,    49,    -1,    51,    52,    53,    54,    55,    -1,
-1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    66,
67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
87,    88,    89,    90,    44,    45,    46,    47,    48,    49,
97,    51,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
-1,    -1,    62,    -1,    -1,    65,    66,    67,    -1,    -1,
-1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    84,    85,    86,    87,    88,    -1,
90,    44,    45,    46,    47,    48,    49,    97,    51,    52,
53,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    62,
-1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    84,    85,    86,    87,    -1,    -1,    90,    44,    45,
46,    47,    48,    49,    97,    51,    -1,    53,    54,    55,
-1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
86,    87,    -1,    -1,    90,    44,    45,    46,    47,    48,
49,    97,    51,    -1,    53,    54,    55,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    -1,    65,    66,    67,    -1,
-1,    -1,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    -1,
-1,    90,    44,    45,    46,    47,    48,    49,    97,    51,
-1,    -1,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    -1,    65,    66,    67,    -1,    -1,    -1,    71,
72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-1,    -1,    84,    85,    86,    87,    -1,    -1,    90,    44,
45,    46,    47,    48,    49,    97,    51,    -1,    -1,    54,
55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
65,    66,    67,    -1,    -1,    -1,    71,    72,    44,    45,
46,    47,    -1,    -1,    -1,    51,    -1,    -1,    54,    55,
50,    86,    87,    -1,    -1,    90,    -1,    -1,    -1,    65,
66,    67,    97,    -1,    -1,    71,    72,    -1,    68,    69,
50,    -1,    -1,    73,    74,    75,    76,    77,    78,    79,
80,    81,    82,    -1,    90,    -1,    -1,    -1,    68,    69,
-1,    97,    -1,    73,    74,    75,    76,    77,    78,    79,
80,    81,    82
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "bison.simple"

/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */

/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison.  */

#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
#pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
   void *alloca(unsigned int);
};
#else /* not __cplusplus */
void *alloca();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc.  */
#endif /* not GNU C.  */
#endif /* alloca not defined.  */

/* This is the parser code that is written into each bison parser
when the %semantic_parser declaration is not specified in the grammar.
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified.  */

/* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	return(0)
#define YYABORT 	return(1)
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.
This remains here temporarily to ease the
transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(token, value) \
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    { yychar = (token), yylval = (value);			\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
while (0)

#define YYTERROR	1
#define YYERRCODE	256

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval, &yylloc)
#endif
#else /* not YYLSP_NEEDED */
#ifdef YYLEX_PARAM
#define YYLEX		yylex(&yylval, YYLEX_PARAM)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif /* not YYLSP_NEEDED */
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
                        /*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
                        /*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
                     /* Since this is uninitialized, it does not stop multiple parsers
                     from coexisting.  */
#endif

                     /*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

                     /*  YYMAXDEPTH is the maximum size the stacks can grow to
                     (effective only if the built-in stack extension method is used).  */

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

                     /* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
int yyparse(void);
#endif

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_memcpy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems.  */
static void
__yy_memcpy(from, to, count)
char *from;
char *to;
int count;
{
   register char *f = from;
   register char *t = to;
   register int i = count;

   while (i-- > 0)
      *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
in available built-in functions on various systems.  */
static void
__yy_memcpy(char *from, char *to, int count)
{
   register char *f = from;
   register char *t = to;
   register int i = count;

   while (i-- > 0)
      *t++ = *f++;
}

#endif
#endif

#line 192 "bison.simple"

/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse.  The argument should have type void *.
It should actually point to an object.
Grammar actions can access the variable by casting it
to the proper pointer type.  */

#ifdef YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#else
#define YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#endif

int
yyparse(YYPARSE_PARAM)
YYPARSE_PARAM_DECL
{
   register int yystate;
   register int yyn;
   register short *yyssp;
   register YYSTYPE *yyvsp;
   int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
   int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

   short	yyssa[YYINITDEPTH];	/*  the state stack			*/
   YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

   short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
   YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
   YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;

#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

   int yystacksize = YYINITDEPTH;

#ifdef YYPURE
   int yychar;
   YYSTYPE yylval;
   int yynerrs;
#ifdef YYLSP_NEEDED
   YYLTYPE yylloc;
#endif
#endif

   YYSTYPE yyval;		/*  the variable used to return		*/
                     /*  semantic values from the action	*/
                     /*  routines				*/

   int yylen;

#if YYDEBUG != 0
   if (yydebug)
      fprintf(stderr, "Starting parse\n");
#endif

   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
   yychar = YYEMPTY;		/* Cause a token to be read.  */

                        /* Initialize stack pointers.
                        Waste one element of value and location stack
                        so that they stay on the same level as the state stack.
                        The wasted elements are never initialized.  */

   yyssp = yyss - 1;
   yyvsp = yyvs;
#ifdef YYLSP_NEEDED
   yylsp = yyls;
#endif

   /* Push a new state, which is found in  yystate  .  */
   /* In all cases, when you get here, the value and location stacks
   have just been pushed. so pushing a state here evens the stacks.  */
yynewstate:

   *++yyssp = yystate;

   if (yyssp >= yyss + yystacksize - 1)
   {
      /* Give user a chance to reallocate the stack */
      /* Use copies of these so that the &'s don't force the real ones into memory. */
      YYSTYPE *yyvs1 = yyvs;
      short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
      the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* This used to be a conditional around just the two extra args,
      but that might be undefined if yyoverflow is a macro.  */
      yyoverflow("parser stack overflow",
         &yyss1, size * sizeof(*yyssp),
         &yyvs1, size * sizeof(*yyvsp),
         &yyls1, size * sizeof(*yylsp),
         &yystacksize);
#else
      yyoverflow("parser stack overflow",
         &yyss1, size * sizeof(*yyssp),
         &yyvs1, size * sizeof(*yyvsp),
         &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
      {
         yyerror("parser stack overflow");
         return 2;
      }
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
         yystacksize = YYMAXDEPTH;
      yyss = (short *)alloca(yystacksize * sizeof(*yyssp));
      __yy_memcpy((char *)yyss1, (char *)yyss, size * sizeof(*yyssp));
      yyvs = (YYSTYPE *)alloca(yystacksize * sizeof(*yyvsp));
      __yy_memcpy((char *)yyvs1, (char *)yyvs, size * sizeof(*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *)alloca(yystacksize * sizeof(*yylsp));
      __yy_memcpy((char *)yyls1, (char *)yyls, size * sizeof(*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

      if (yyssp >= yyss + yystacksize - 1)
         YYABORT;
   }

#if YYDEBUG != 0
   if (yydebug)
      fprintf(stderr, "Entering state %d\n", yystate);
#endif

   goto yybackup;
yybackup:

   /* Do appropriate processing given the current state.  */
   /* Read a lookahead token if we need one and don't already have one.  */
   /* yyresume: */

   /* First try to decide what to do without reference to lookahead token.  */

   yyn = yypact[yystate];
   if (yyn == YYFLAG)
      goto yydefault;

   /* Not known => get a lookahead token if don't already have one.  */

   /* yychar is either YYEMPTY or YYEOF
   or a valid token in external form.  */

   if (yychar == YYEMPTY)
   {
#if YYDEBUG != 0
      if (yydebug)
         fprintf(stderr, "Reading a token: ");
#endif
      yychar = YYLEX;
   }

   /* Convert token to internal form (in yychar1) for indexing tables with */

   if (yychar <= 0)		/* This means end of input. */
   {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

#if YYDEBUG != 0
      if (yydebug)
         fprintf(stderr, "Now at end of input.\n");
#endif
   }
   else
   {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
      {
         fprintf(stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
         /* Give the individual parser a way to print the precise meaning
         of a token, for further debugging info.  */
#ifdef YYPRINT
         YYPRINT(stderr, yychar, yylval);
#endif
         fprintf(stderr, ")\n");
      }
#endif
   }

   yyn += yychar1;
   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
      goto yydefault;

   yyn = yytable[yyn];

   /* yyn is what to do for this token type in this state.
   Negative => reduce, -yyn is rule number.
   Positive => shift, yyn is new state.
   New state is final state => don't bother to shift,
   just return success.
   0, or most negative number => error.  */

   if (yyn < 0)
   {
      if (yyn == YYFLAG)
         goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
   }
   else if (yyn == 0)
      goto yyerrlab;

   if (yyn == YYFINAL)
      YYACCEPT;

   /* Shift the lookahead token.  */

#if YYDEBUG != 0
   if (yydebug)
      fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
      yychar = YYEMPTY;

   *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
   *++yylsp = yylloc;
#endif

   /* count tokens shifted since error; after three, turn off error status.  */
   if (yyerrstatus) yyerrstatus--;

   yystate = yyn;
   goto yynewstate;

   /* Do the default action for the current state.  */
yydefault:

   yyn = yydefact[yystate];
   if (yyn == 0)
      goto yyerrlab;

   /* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
   yylen = yyr2[yyn];
   if (yylen > 0)
      yyval = yyvsp[1 - yylen]; /* implement default value of the action */

#if YYDEBUG != 0
   if (yydebug)
   {
      int i;

      fprintf(stderr, "Reducing via rule %d (line %d), ",
         yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
         fprintf(stderr, "%s ", yytname[yyrhs[i]]);
      fprintf(stderr, " -> %s\n", yytname[yyr1[yyn]]);
   }
#endif


   switch (yyn) {

      case 1:
#line 162 "cmdgram.y"
      {;
      break; }
      case 2:
#line 167 "cmdgram.y"
      { yyval.stmt = nil; ;
      break; }
      case 3:
#line 169 "cmdgram.y"
      { if (!gStatementList) { gStatementList = yyvsp[0].stmt; }
      else { gStatementList->append(yyvsp[0].stmt); };
      break; }
      case 4:
#line 174 "cmdgram.y"
      { yyval.stmt = yyvsp[0].stmt; ;
      break; }
      case 5:
#line 176 "cmdgram.y"
      { yyval.stmt = yyvsp[0].stmt; ;
      break; }
      case 6:
#line 178 "cmdgram.y"
      { yyval.stmt = yyvsp[0].stmt; ;
      break; }
      case 7:
#line 183 "cmdgram.y"
      { yyval.stmt = yyvsp[-2].stmt; for (StmtNode *walk = (yyvsp[-2].stmt); walk; walk = walk->getNext()) walk->setPackage(yyvsp[-4].s.value); ;
      break; }
      case 8:
#line 188 "cmdgram.y"
      { yyval.stmt = yyvsp[0].stmt; ;
      break; }
      case 9:
#line 190 "cmdgram.y"
      { yyval.stmt = yyvsp[-1].stmt; (yyvsp[-1].stmt)->append(yyvsp[0].stmt); ;
      break; }
      case 10:
#line 195 "cmdgram.y"
      { yyval.stmt = nil; ;
      break; }
      case 11:
#line 197 "cmdgram.y"
      { if (!yyvsp[-1].stmt) { yyval.stmt = yyvsp[0].stmt; }
      else { (yyvsp[-1].stmt)->append(yyvsp[0].stmt); yyval.stmt = yyvsp[-1].stmt; };
      break; }
      case 18:
#line 208 "cmdgram.y"
      { yyval.stmt = BreakStmtNode::alloc(yyvsp[-1].i.lineNumber); ;
      break; }
      case 19:
#line 210 "cmdgram.y"
      { yyval.stmt = ContinueStmtNode::alloc(yyvsp[-1].i.lineNumber); ;
      break; }
      case 20:
#line 212 "cmdgram.y"
      { yyval.stmt = ReturnStmtNode::alloc(yyvsp[-1].i.lineNumber, NULL); ;
      break; }
      case 21:
#line 214 "cmdgram.y"
      { yyval.stmt = ReturnStmtNode::alloc(yyvsp[-2].i.lineNumber, yyvsp[-1].expr); ;
      break; }
      case 22:
#line 216 "cmdgram.y"
      { yyval.stmt = yyvsp[-1].stmt; ;
      break; }
      case 23:
#line 218 "cmdgram.y"
      { yyval.stmt = TTagSetStmtNode::alloc(yyvsp[-3].s.lineNumber, yyvsp[-3].s.value, yyvsp[-1].expr, NULL); ;
      break; }
      case 24:
#line 220 "cmdgram.y"
      { yyval.stmt = TTagSetStmtNode::alloc(yyvsp[-5].s.lineNumber, yyvsp[-5].s.value, yyvsp[-3].expr, yyvsp[-1].expr); ;
      break; }
      case 25:
#line 222 "cmdgram.y"
      { yyval.stmt = StrConstNode::alloc(yyvsp[0].str.lineNumber, yyvsp[0].str.value, false, true); ;
      break; }
      case 26:
#line 227 "cmdgram.y"
      { yyval.stmt = FunctionDeclStmtNode::alloc(yyvsp[-7].i.lineNumber, yyvsp[-6].s.value, NULL, yyvsp[-4].var, yyvsp[-1].stmt); ;
      break; }
      case 27:
#line 229 "cmdgram.y"
      { yyval.stmt = FunctionDeclStmtNode::alloc(yyvsp[-9].i.lineNumber, yyvsp[-6].s.value, yyvsp[-8].s.value, yyvsp[-4].var, yyvsp[-1].stmt); ;
      break; }
      case 28:
#line 234 "cmdgram.y"
      { yyval.var = NULL; ;
      break; }
      case 29:
#line 236 "cmdgram.y"
      { yyval.var = yyvsp[0].var; ;
      break; }
      case 30:
#line 241 "cmdgram.y"
      { yyval.var = VarNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value, NULL); ;
      break; }
      case 31:
#line 243 "cmdgram.y"
      { yyval.var = yyvsp[-2].var; ((StmtNode*)(yyvsp[-2].var))->append((StmtNode*)VarNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value, NULL)); ;
      break; }
      case 32:
#line 248 "cmdgram.y"
      { yyval.stmt = ObjectDeclNode::alloc(yyvsp[-9].i.lineNumber, yyvsp[-8].expr, yyvsp[-6].expr, NULL, yyvsp[-5].s.value, yyvsp[-2].slist, NULL, true, false, false); ;
      break; }
      case 33:
#line 253 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-9].i.lineNumber, yyvsp[-8].expr, yyvsp[-6].expr, yyvsp[-4].expr, yyvsp[-5].s.value, yyvsp[-1].odcl.slots, yyvsp[-1].odcl.decls, false, false, false); ;
      break; }
      case 34:
#line 255 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-5].expr, yyvsp[-3].expr, yyvsp[-1].expr, yyvsp[-2].s.value, NULL, NULL, false, false, false); ;
      break; }
      case 35:
#line 257 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-11].i.lineNumber, yyvsp[-10].expr, yyvsp[-7].expr, yyvsp[-4].expr, yyvsp[-5].s.value, yyvsp[-1].odcl.slots, yyvsp[-1].odcl.decls, false, true, false); ;
      break; }
      case 36:
#line 259 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-8].i.lineNumber, yyvsp[-7].expr, yyvsp[-4].expr, yyvsp[-1].expr, yyvsp[-2].s.value, NULL, NULL, false, true, false); ;
      break; }
      case 37:
#line 261 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-9].i.lineNumber, yyvsp[-8].expr, yyvsp[-6].expr, yyvsp[-4].expr, yyvsp[-5].s.value, yyvsp[-1].odcl.slots, yyvsp[-1].odcl.decls, false, false, true); ;
      break; }
      case 38:
#line 263 "cmdgram.y"
      { yyval.od = ObjectDeclNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-5].expr, yyvsp[-3].expr, yyvsp[-1].expr, yyvsp[-2].s.value, NULL, NULL, false, false, true); ;
      break; }
      case 39:
#line 268 "cmdgram.y"
      { yyval.s.value = NULL; ;
      break; }
      case 40:
#line 270 "cmdgram.y"
      { yyval.s = yyvsp[0].s; ;
      break; }
      case 41:
#line 275 "cmdgram.y"
      { yyval.expr = StrConstNode::alloc(CodeBlock::smCurrentParser->getCurrentLine(), "", false); ;
      break; }
      case 42:
#line 277 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 43:
#line 282 "cmdgram.y"
      { yyval.expr = NULL; ;
      break; }
      case 44:
#line 284 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 45:
#line 289 "cmdgram.y"
      { yyval.odcl.slots = NULL; yyval.odcl.decls = NULL; ;
      break; }
      case 46:
#line 291 "cmdgram.y"
      { yyval.odcl.slots = yyvsp[0].slist; yyval.odcl.decls = NULL; ;
      break; }
      case 47:
#line 293 "cmdgram.y"
      { yyval.odcl.slots = NULL; yyval.odcl.decls = yyvsp[0].od; ;
      break; }
      case 48:
#line 295 "cmdgram.y"
      { yyval.odcl.slots = yyvsp[-1].slist; yyval.odcl.decls = yyvsp[0].od; ;
      break; }
      case 49:
#line 300 "cmdgram.y"
      { yyval.od = yyvsp[-1].od; ;
      break; }
      case 50:
#line 302 "cmdgram.y"
      { yyvsp[-2].od->append(yyvsp[-1].od); yyval.od = yyvsp[-2].od; ;
      break; }
      case 51:
#line 307 "cmdgram.y"
      { yyval.stmt = yyvsp[-1].stmt; ;
      break; }
      case 52:
#line 309 "cmdgram.y"
      { yyval.stmt = yyvsp[0].stmt; ;
      break; }
      case 53:
#line 314 "cmdgram.y"
      { yyval.stmt = yyvsp[-1].ifnode; yyvsp[-1].ifnode->propagateSwitchExpr(yyvsp[-4].expr, false); ;
      break; }
      case 54:
#line 316 "cmdgram.y"
      { yyval.stmt = yyvsp[-1].ifnode; yyvsp[-1].ifnode->propagateSwitchExpr(yyvsp[-4].expr, true); ;
      break; }
      case 55:
#line 321 "cmdgram.y"
      { yyval.ifnode = IfStmtNode::alloc(yyvsp[-3].i.lineNumber, yyvsp[-2].expr, yyvsp[0].stmt, NULL, false); ;
      break; }
      case 56:
#line 323 "cmdgram.y"
      { yyval.ifnode = IfStmtNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-5].expr, yyvsp[-3].stmt, yyvsp[0].stmt, false); ;
      break; }
      case 57:
#line 325 "cmdgram.y"
      { yyval.ifnode = IfStmtNode::alloc(yyvsp[-4].i.lineNumber, yyvsp[-3].expr, yyvsp[-1].stmt, yyvsp[0].ifnode, true); ;
      break; }
      case 58:
#line 330 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr;;
      break; }
      case 59:
#line 332 "cmdgram.y"
      { (yyvsp[-2].expr)->append(yyvsp[0].expr); yyval.expr = yyvsp[-2].expr; ;
      break; }
      case 60:
#line 337 "cmdgram.y"
      { yyval.stmt = IfStmtNode::alloc(yyvsp[-4].i.lineNumber, yyvsp[-2].expr, yyvsp[0].stmt, NULL, false); ;
      break; }
      case 61:
#line 339 "cmdgram.y"
      { yyval.stmt = IfStmtNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-4].expr, yyvsp[-2].stmt, yyvsp[0].stmt, false); ;
      break; }
      case 62:
#line 344 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-4].i.lineNumber, nil, yyvsp[-2].expr, nil, yyvsp[0].stmt, false); ;
      break; }
      case 63:
#line 346 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-3].i.lineNumber, nil, yyvsp[-1].expr, nil, yyvsp[-4].stmt, true); ;
      break; }
      case 64:
#line 351 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-8].i.lineNumber, yyvsp[-6].expr, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt, false); ;
      break; }
      case 65:
#line 353 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-7].i.lineNumber, yyvsp[-5].expr, yyvsp[-3].expr, NULL, yyvsp[0].stmt, false); ;
      break; }
      case 66:
#line 355 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-7].i.lineNumber, yyvsp[-5].expr, NULL, yyvsp[-2].expr, yyvsp[0].stmt, false); ;
      break; }
      case 67:
#line 357 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-4].expr, NULL, NULL, yyvsp[0].stmt, false); ;
      break; }
      case 68:
#line 359 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-7].i.lineNumber, NULL, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt, false); ;
      break; }
      case 69:
#line 361 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-6].i.lineNumber, NULL, yyvsp[-3].expr, NULL, yyvsp[0].stmt, false); ;
      break; }
      case 70:
#line 363 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-6].i.lineNumber, NULL, NULL, yyvsp[-2].expr, yyvsp[0].stmt, false); ;
      break; }
      case 71:
#line 365 "cmdgram.y"
      { yyval.stmt = LoopStmtNode::alloc(yyvsp[-5].i.lineNumber, NULL, NULL, NULL, yyvsp[0].stmt, false); ;
      break; }
      case 72:
#line 370 "cmdgram.y"
      { yyval.stmt = IterStmtNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-4].s.value, yyvsp[-2].expr, yyvsp[0].stmt, false); ;
      break; }
      case 73:
#line 372 "cmdgram.y"
      { yyval.stmt = IterStmtNode::alloc(yyvsp[-6].i.lineNumber, yyvsp[-4].s.value, yyvsp[-2].expr, yyvsp[0].stmt, true); ;
      break; }
      case 74:
#line 377 "cmdgram.y"
      { yyval.stmt = yyvsp[0].expr; ;
      break; }
      case 75:
#line 382 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 76:
#line 384 "cmdgram.y"
      { yyval.expr = yyvsp[-1].expr; ;
      break; }
      case 77:
#line 386 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 78:
#line 388 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 79:
#line 390 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 80:
#line 392 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 81:
#line 394 "cmdgram.y"
      { yyval.expr = FloatBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 82:
#line 396 "cmdgram.y"
      { yyval.expr = FloatBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 83:
#line 398 "cmdgram.y"
      { yyval.expr = FloatBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 84:
#line 400 "cmdgram.y"
      { yyval.expr = FloatBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 85:
#line 402 "cmdgram.y"
      { yyval.expr = FloatUnaryExprNode::alloc(yyvsp[-1].i.lineNumber, yyvsp[-1].i.value, yyvsp[0].expr); ;
      break; }
      case 86:
#line 404 "cmdgram.y"
      { yyval.expr = TTagDerefNode::alloc(yyvsp[-1].i.lineNumber, yyvsp[0].expr); ;
      break; }
      case 87:
#line 406 "cmdgram.y"
      { yyval.expr = TTagExprNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value); ;
      break; }
      case 88:
#line 408 "cmdgram.y"
      { yyval.expr = ConditionalExprNode::alloc(yyvsp[-4].expr->dbgLineNumber, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 89:
#line 410 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 90:
#line 412 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 91:
#line 414 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 92:
#line 416 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 93:
#line 418 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 94:
#line 420 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 95:
#line 422 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 96:
#line 424 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 97:
#line 426 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 98:
#line 428 "cmdgram.y"
      { yyval.expr = IntBinaryExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-1].i.value, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
      case 99:
#line 430 "cmdgram.y"
      { yyval.expr = StreqExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-2].expr, yyvsp[0].expr, true); ;
      break; }
      case 100:
#line 432 "cmdgram.y"
      { yyval.expr = StreqExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-2].expr, yyvsp[0].expr, false); ;
      break; }
      case 101:
#line 434 "cmdgram.y"
      { yyval.expr = StrcatExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].i.value); ;
      break; }
      case 102:
#line 436 "cmdgram.y"
      { yyval.expr = IntUnaryExprNode::alloc(yyvsp[-1].i.lineNumber, yyvsp[-1].i.value, yyvsp[0].expr); ;
      break; }
      case 103:
#line 438 "cmdgram.y"
      { yyval.expr = IntUnaryExprNode::alloc(yyvsp[-1].i.lineNumber, yyvsp[-1].i.value, yyvsp[0].expr); ;
      break; }
      case 104:
#line 440 "cmdgram.y"
      { yyval.expr = StrConstNode::alloc(yyvsp[0].str.lineNumber, yyvsp[0].str.value, true); ;
      break; }
      case 105:
#line 442 "cmdgram.y"
      { yyval.expr = FloatNode::alloc(yyvsp[0].f.lineNumber, yyvsp[0].f.value); ;
      break; }
      case 106:
#line 444 "cmdgram.y"
      { yyval.expr = IntNode::alloc(yyvsp[0].i.lineNumber, yyvsp[0].i.value); ;
      break; }
      case 107:
#line 446 "cmdgram.y"
      { yyval.expr = ConstantNode::alloc(yyvsp[0].i.lineNumber, StringTable->insert("break")); ;
      break; }
      case 108:
#line 448 "cmdgram.y"
      { yyval.expr = SlotAccessNode::alloc(yyvsp[0].slot.lineNumber, yyvsp[0].slot.object, yyvsp[0].slot.array, yyvsp[0].slot.slotName); ;
      break; }
      case 109:
#line 450 "cmdgram.y"
      { yyval.expr = InternalSlotAccessNode::alloc(yyvsp[0].intslot.lineNumber, yyvsp[0].intslot.object, yyvsp[0].intslot.slotExpr, yyvsp[0].intslot.recurse); ;
      break; }
      case 110:
#line 452 "cmdgram.y"
      { yyval.expr = ConstantNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value); ;
      break; }
      case 111:
#line 454 "cmdgram.y"
      { yyval.expr = StrConstNode::alloc(yyvsp[0].str.lineNumber, yyvsp[0].str.value, false); ;
      break; }
      case 112:
#line 456 "cmdgram.y"
      { yyval.expr = (ExprNode*)VarNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value, NULL); ;
      break; }
      case 113:
#line 458 "cmdgram.y"
      { yyval.expr = (ExprNode*)VarNode::alloc(yyvsp[-3].s.lineNumber, yyvsp[-3].s.value, yyvsp[-1].expr); ;
      break; }
      case 114:
#line 460 "cmdgram.y"
      {
         const U32 bufLen = 64;
         UTF8 buffer[bufLen];
         dSprintf(buffer, bufLen, "__anonymous_function%d", gAnonFunctionID++);
         StringTableEntry fName = StringTable->insert(buffer);
         StmtNode *fndef = FunctionDeclStmtNode::alloc(yyvsp[-6].i.lineNumber, fName, NULL, yyvsp[-4].var, yyvsp[-1].stmt);

         if (!gAnonFunctionList)
            gAnonFunctionList = fndef;
         else
            gAnonFunctionList->append(fndef);

         yyval.expr = StrConstNode::alloc(yyvsp[-6].i.lineNumber, (UTF8*)fName, false);
         ;
         break; }
      case 115:
#line 478 "cmdgram.y"
      { yyval.slot.lineNumber = yyvsp[-2].expr->dbgLineNumber; yyval.slot.object = yyvsp[-2].expr; yyval.slot.slotName = yyvsp[0].s.value; yyval.slot.array = NULL; ;
      break; }
      case 116:
#line 480 "cmdgram.y"
      { yyval.slot.lineNumber = yyvsp[-5].expr->dbgLineNumber; yyval.slot.object = yyvsp[-5].expr; yyval.slot.slotName = yyvsp[-3].s.value; yyval.slot.array = yyvsp[-1].expr; ;
      break; }
      case 117:
#line 485 "cmdgram.y"
      { yyval.intslot.lineNumber = yyvsp[-2].expr->dbgLineNumber; yyval.intslot.object = yyvsp[-2].expr; yyval.intslot.slotExpr = yyvsp[0].expr; yyval.intslot.recurse = false; ;
      break; }
      case 118:
#line 487 "cmdgram.y"
      { yyval.intslot.lineNumber = yyvsp[-2].expr->dbgLineNumber; yyval.intslot.object = yyvsp[-2].expr; yyval.intslot.slotExpr = yyvsp[0].expr; yyval.intslot.recurse = true; ;
      break; }
      case 119:
#line 492 "cmdgram.y"
      { yyval.expr = ConstantNode::alloc(yyvsp[0].s.lineNumber, yyvsp[0].s.value); ;
      break; }
      case 120:
#line 494 "cmdgram.y"
      { yyval.expr = yyvsp[-1].expr; ;
      break; }
      case 121:
#line 499 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[0].i.lineNumber; yyval.asn.token = opPLUSPLUS; yyval.asn.expr = FloatNode::alloc(yyvsp[0].i.lineNumber, 1); ;
      break; }
      case 122:
#line 501 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[0].i.lineNumber; yyval.asn.token = opMINUSMINUS; yyval.asn.expr = FloatNode::alloc(yyvsp[0].i.lineNumber, 1); ;
      break; }
      case 123:
#line 503 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '+'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 124:
#line 505 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '-'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 125:
#line 507 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '*'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 126:
#line 509 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '/'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 127:
#line 511 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '%'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 128:
#line 513 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '&'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 129:
#line 515 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '^'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 130:
#line 517 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = '|'; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 131:
#line 519 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = opSHL; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 132:
#line 521 "cmdgram.y"
      { yyval.asn.lineNumber = yyvsp[-1].i.lineNumber; yyval.asn.token = opSHR; yyval.asn.expr = yyvsp[0].expr; ;
      break; }
      case 133:
#line 526 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 134:
#line 528 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 135:
#line 530 "cmdgram.y"
      { yyval.expr = yyvsp[0].od; ;
      break; }
      case 136:
#line 532 "cmdgram.y"
      { yyval.expr = AssignExprNode::alloc(yyvsp[-2].s.lineNumber, yyvsp[-2].s.value, NULL, yyvsp[0].expr); ;
      break; }
      case 137:
#line 534 "cmdgram.y"
      { yyval.expr = AssignExprNode::alloc(yyvsp[-5].s.lineNumber, yyvsp[-5].s.value, yyvsp[-3].expr, yyvsp[0].expr); ;
      break; }
      case 138:
#line 536 "cmdgram.y"
      { yyval.expr = AssignOpExprNode::alloc(yyvsp[-1].s.lineNumber, yyvsp[-1].s.value, NULL, yyvsp[0].asn.expr, yyvsp[0].asn.token); ;
      break; }
      case 139:
#line 538 "cmdgram.y"
      { yyval.expr = AssignOpExprNode::alloc(yyvsp[-4].s.lineNumber, yyvsp[-4].s.value, yyvsp[-2].expr, yyvsp[0].asn.expr, yyvsp[0].asn.token); ;
      break; }
      case 140:
#line 540 "cmdgram.y"
      { yyval.expr = SlotAssignOpNode::alloc(yyvsp[-1].slot.lineNumber, yyvsp[-1].slot.object, yyvsp[-1].slot.slotName, yyvsp[-1].slot.array, yyvsp[0].asn.token, yyvsp[0].asn.expr); ;
      break; }
      case 141:
#line 542 "cmdgram.y"
      { yyval.expr = SlotAssignNode::alloc(yyvsp[-2].slot.lineNumber, yyvsp[-2].slot.object, yyvsp[-2].slot.array, yyvsp[-2].slot.slotName, yyvsp[0].expr); ;
      break; }
      case 142:
#line 544 "cmdgram.y"
      { yyval.expr = SlotAssignNode::alloc(yyvsp[-4].slot.lineNumber, yyvsp[-4].slot.object, yyvsp[-4].slot.array, yyvsp[-4].slot.slotName, yyvsp[-1].expr); ;
      break; }
      case 143:
#line 549 "cmdgram.y"
      { yyval.expr = FuncCallExprNode::alloc(yyvsp[-3].s.lineNumber, yyvsp[-3].s.value, NULL, yyvsp[-1].expr, false); ;
      break; }
      case 144:
#line 551 "cmdgram.y"
      { yyval.expr = FuncCallExprNode::alloc(yyvsp[-5].s.lineNumber, yyvsp[-3].s.value, yyvsp[-5].s.value, yyvsp[-1].expr, false); ;
      break; }
      case 145:
#line 553 "cmdgram.y"
      { yyvsp[-5].expr->append(yyvsp[-1].expr); yyval.expr = FuncCallExprNode::alloc(yyvsp[-5].expr->dbgLineNumber, yyvsp[-3].s.value, NULL, yyvsp[-5].expr, true); ;
      break; }
      case 146:
#line 555 "cmdgram.y"
      { yyval.expr = FuncPointerCallExprNode::alloc(yyvsp[-3].expr->dbgLineNumber, yyvsp[-3].expr, yyvsp[-1].expr); ;
      break; }
      case 147:
#line 560 "cmdgram.y"
      { yyval.expr = AssertCallExprNode::alloc(yyvsp[-3].i.lineNumber, yyvsp[-1].expr, NULL); ;
      break; }
      case 148:
#line 562 "cmdgram.y"
      { yyval.expr = AssertCallExprNode::alloc(yyvsp[-5].i.lineNumber, yyvsp[-3].expr, yyvsp[-1].str.value); ;
      break; }
      case 149:
#line 567 "cmdgram.y"
      { yyval.expr = NULL; ;
      break; }
      case 150:
#line 569 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 151:
#line 574 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 152:
#line 576 "cmdgram.y"
      { (yyvsp[-2].expr)->append(yyvsp[0].expr); yyval.expr = yyvsp[-2].expr; ;
      break; }
      case 153:
#line 581 "cmdgram.y"
      { yyval.slist = NULL; ;
      break; }
      case 154:
#line 583 "cmdgram.y"
      { yyval.slist = yyvsp[0].slist; ;
      break; }
      case 155:
#line 588 "cmdgram.y"
      { yyval.slist = yyvsp[0].slist; ;
      break; }
      case 156:
#line 590 "cmdgram.y"
      { yyvsp[-1].slist->append(yyvsp[0].slist); yyval.slist = yyvsp[-1].slist; ;
      break; }
      case 157:
#line 595 "cmdgram.y"
      { yyval.slist = SlotAssignNode::alloc(yyvsp[-3].s.lineNumber, NULL, NULL, yyvsp[-3].s.value, yyvsp[-1].expr); ;
      break; }
      case 158:
#line 597 "cmdgram.y"
      { yyval.slist = SlotAssignNode::alloc(yyvsp[-4].i.lineNumber, NULL, NULL, yyvsp[-3].s.value, yyvsp[-1].expr, yyvsp[-4].i.value); ;
      break; }
      case 159:
#line 599 "cmdgram.y"
      { yyval.slist = SlotAssignNode::alloc(yyvsp[-3].i.lineNumber, NULL, NULL, StringTable->insert("datablock"), yyvsp[-1].expr); ;
      break; }
      case 160:
#line 601 "cmdgram.y"
      { yyval.slist = SlotAssignNode::alloc(yyvsp[-6].s.lineNumber, NULL, yyvsp[-4].expr, yyvsp[-6].s.value, yyvsp[-1].expr); ;
      break; }
      case 161:
#line 603 "cmdgram.y"
      { yyval.slist = SlotAssignNode::alloc(yyvsp[-7].i.lineNumber, NULL, yyvsp[-4].expr, yyvsp[-6].s.value, yyvsp[-1].expr, yyvsp[-7].i.value); ;
      break; }
      case 162:
#line 608 "cmdgram.y"
      { yyval.expr = yyvsp[0].expr; ;
      break; }
      case 163:
#line 610 "cmdgram.y"
      { yyval.expr = CommaCatExprNode::alloc(yyvsp[-2].expr->dbgLineNumber, yyvsp[-2].expr, yyvsp[0].expr); ;
      break; }
   }
   /* the action file gets copied in in place of this dollarsign */
#line 487 "bison.simple"

   yyvsp -= yylen;
   yyssp -= yylen;
#ifdef YYLSP_NEEDED
   yylsp -= yylen;
#endif

#if YYDEBUG != 0
   if (yydebug)
   {
      short *ssp1 = yyss - 1;
      fprintf(stderr, "state stack now");
      while (ssp1 != yyssp)
         fprintf(stderr, " %d", *++ssp1);
      fprintf(stderr, "\n");
   }
#endif

   *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
   yylsp++;
   if (yylen == 0)
   {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp - 1)->last_line;
      yylsp->last_column = (yylsp - 1)->last_column;
      yylsp->text = 0;
   }
   else
   {
      yylsp->last_line = (yylsp + yylen - 1)->last_line;
      yylsp->last_column = (yylsp + yylen - 1)->last_column;
   }
#endif

   /* Now "shift" the result of the reduction.
   Determine what state that goes to,
   based on the state we popped back to
   and the rule number reduced by.  */

   yyn = yyr1[yyn];

   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
      yystate = yytable[yystate];
   else
      yystate = yydefgoto[yyn - YYNTBASE];

   goto yynewstate;

yyerrlab:   /* here on detecting error */

   if (!yyerrstatus)
      /* If not already recovering from an error, report this error.  */
   {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
      {
         int size = 0;
         char *msg;
         int x, count;

         count = 0;
         /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
         for (x = (yyn < 0 ? -yyn : 0);
            x < (sizeof(yytname) / sizeof(char *)); x++)
            if (yycheck[x + yyn] == x)
               size += strlen(yytname[x]) + 15, count++;
         msg = (char *)malloc(size + 15);
         if (msg != 0)
         {
            strcpy(msg, "parse error");

            if (count < 5)
            {
               count = 0;
               for (x = (yyn < 0 ? -yyn : 0);
                  x < (sizeof(yytname) / sizeof(char *)); x++)
                  if (yycheck[x + yyn] == x)
                  {
                     strcat(msg, count == 0 ? ", expecting `" : " or `");
                     strcat(msg, yytname[x]);
                     strcat(msg, "'");
                     count++;
                  }
            }
            yyerror(msg);
            free(msg);
         }
         else
            yyerror("parse error; also virtual memory exceeded");
      }
      else
#endif /* YYERROR_VERBOSE */
         yyerror("parse error");
   }

   goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

   if (yyerrstatus == 3)
   {
      /* if just tried and failed to reuse lookahead token after an error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
         YYABORT;

#if YYDEBUG != 0
      if (yydebug)
         fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      yychar = YYEMPTY;
   }

   /* Else will try to reuse lookahead token
   after shifting the error token.  */

   yyerrstatus = 3;		/* Each real token shifted decrements this */

   goto yyerrhandle;

yyerrdefault:  /* current state does not do anything special for the error token. */

#if 0
               /* This is wrong; only states that explicitly want error tokens
               should shift them.  */
   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
   if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

   if (yyssp == yyss) YYABORT;
   yyvsp--;
   yystate = *--yyssp;
#ifdef YYLSP_NEEDED
   yylsp--;
#endif

#if YYDEBUG != 0
   if (yydebug)
   {
      short *ssp1 = yyss - 1;
      fprintf(stderr, "Error: state stack now");
      while (ssp1 != yyssp)
         fprintf(stderr, " %d", *++ssp1);
      fprintf(stderr, "\n");
   }
#endif

yyerrhandle:

   yyn = yypact[yystate];
   if (yyn == YYFLAG)
      goto yyerrdefault;

   yyn += YYTERROR;
   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
      goto yyerrdefault;

   yyn = yytable[yyn];
   if (yyn < 0)
   {
      if (yyn == YYFLAG)
         goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
   }
   else if (yyn == 0)
      goto yyerrpop;

   if (yyn == YYFINAL)
      YYACCEPT;

#if YYDEBUG != 0
   if (yydebug)
      fprintf(stderr, "Shifting error token, ");
#endif

   *++yyvsp = yylval;
#ifdef YYLSP_NEEDED
   *++yylsp = yylloc;
#endif

   yystate = yyn;
   goto yynewstate;
}
#line 612 "cmdgram.y"


